Skip to content

Latest commit

 

History

History
180 lines (126 loc) · 6.65 KB

File metadata and controls

180 lines (126 loc) · 6.65 KB

Bağlı İki Listenin Kesişimi

Intersection of Two Linked Lists

İçindekiler


Kaynak LeetCode
Kategori Linked List
Zorluk Seviyesi Kolay
Eklenme Tarihi 1 Aralık 2024
Anahtar Kelime

—————————————————————————————————————————————————

Problem Açıklaması

İki bağlı listenin (linked-list) başlarını (headA ve headB) verilen bir fonksiyonda, bu iki listenin kesiştiği düğümü döndürün. Eğer iki bağlı listenin kesişimi yoksa null döndürün.

Örneğin: Aşağıdaki bağlı iki liste c1 düğümünde kesişmeye başlıyor.

Resim

Test senaryoları, bağlı yapıların içinde herhangi bir döngü olmadığı garanti edilerek üretilir.

Not: Bağlı listeler, fonksiyon döndükten sonra özgün yapılarını korumalıdır.

Özel Hakem (Custom Judge)

Hakeme verilen girdiler şunlardır (programınıza bu girdiler doğrudan verilmez):

  • intersectVal: Kesişimin olduğu düğümün değeri. Eğer bir kesişim yoksa bu değer 0 olur.
  • listA: İlk bağlı listenin başı.
  • listB: İkinci bağlı listenin başı.
  • skipA: listA içinde kesişim düğümüne ulaşmak için baştan itibaren atlanacak düğüm sayısı.
  • skipB: listB içinde kesişim düğümüne ulaşmak için baştan itibaren atlanacak düğüm sayısı.

Hakem, bu girdilere dayanarak bağlı yapıların tamamını oluşturacak ve programınıza yalnızca headA ve headB başlarını verecek. Eğer doğru şekilde kesişim düğümünü döndürürseniz çözümünüz kabul edilecektir.

—————————————————————————————————————————————————

Örnekler

  • Örnek 1

    Örnek 1 Resmi

    Girdi: intersectVal = 8 listA = [4, 1, 8, 4, 5] listB = [5, 6, 1, 8, 4, 5] skipA = 2 skipB = 3

    Çıktı: 8 değerinde kesişim bulundu.

    Açıklama: Kesişen düğümün değeri 8dir (iki liste kesişiyorsa bu değer 0 olamaz).

    • A listesinin başından itibaren: [4, 1, 8, 4, 5]
    • B listesinin başından itibaren: [5, 6, 1, 8, 4, 5]
    • A listesindeki kesişen düğümden önce 2 düğüm, B listesindeki kesişen düğümden önce 3 düğüm vardır.

    Not: A ve B listelerindeki 1 değerine sahip düğümler farklı düğüm referanslarıdır (yani bellekte farklı konumlara işaret ederler). Ancak 8 değerine sahip düğümler aynı bellek adresine işaret eder, dolayısıyla kesişim bu düğümde gerçekleşir.

  • Örnek 2

    Örnek 2 Resmi

    Girdi: intersectVal = 2 listA = [1, 9, 1, 2, 4] listB = [3, 2, 4] skipA = 3 skipB = 1

    Çıktı: 2 değerinde kesişim bulundu.

    Açıklama: Kesişen düğümün değeri 2dir (iki liste kesişiyorsa bu değer 0 olamaz).

    • A listesinin başından itibaren: [1, 9, 1, 2, 4]
    • B listesinin başından itibaren: [3, 2, 4]
    • A listesindeki kesişen düğümden önce 3 düğüm, B listesindeki kesişen düğümden önce 1 düğüm vardır.
  • Örnek 3

    Örnek 3 Resmi

    Girdi: intersectVal = 0 listA = [2,6,4] listB = [1,5] skipA = 3 skipB = 2

    Çıktı: Kesişim yok.

    Açıklama: A'nın başından itibaren liste [2,6,4] olarak okunur. B'nin başından itibaren liste [1,5] olarak okunur. İki liste kesişmediği için intersectVal 0 olmalıdır ve skipA ile skipB rastgele değerler olabilir.

    • İki liste kesişmediği için sonuç null döndürülür.

—————————————————————————————————————————————————

Kısıtlar

  • listA'nın düğüm sayısı m içindedir.
  • listB'nin düğüm sayısı n içindedir.
  • 1 <= m, n <= 3 * 10⁴
  • 1 <= Node.val <= 10⁵
  • 0 <= skipA <= m
  • 0 <= skipB <= n
  • Eğer listA ve listB kesişmiyorsa intersectVal 0'dır.
  • Eğer listA ve listB kesişiyorsa intersectVal = listA[skipA] == listB[skipB]

—————————————————————————————————————————————————

Çözüm

Dil Zaman Karmaşıklığı ⏳ Bellek Karmaşıklığı 🧠 Çözüm Tarihi 📅
Kotlin O(m + n) O(1) 1 Aralık 2024

Problem çözümünü faydalı bulduysanız destek olmak adına beni takip edebilir veya bir kahve ısmarlayabilirsiniz ☕

Destekleriniz daha fazla problem üzerinde çalışmam için motivasyon sağlar 🚀


Buy Me a Coffee

—————————————————————————————————————————————————

İletişim

Mail Telegram LinkedIn

Back to Top